//数组类型
let numbers: number[] = [1, 2, 3];
let names: Array<string> = ["Alice", "Bob"];
console.log(numbers[1])
console.log(numbers[1]+numbers[0])
//对象类型：接口定义
interface User {
    /**
     * interface 只是 TypeScript 的类型注解，用于：
    开发时类型检查
    代码提示和智能补全
    文档说明
     */
    id: number;
    name: string;
    email?: string; // 可选属性，email这个属性可以有也可以没有
    readonly createdAt: Date; // 只读属性
}

const user: User = {
    id: 1,
    name: "Alice",
    createdAt: new Date()
};

//联合类型
let id: string | number = "abc123";
id = 123; // 也有效

type Status = "pending" | "success" | "error";//pending是进行中，等待中的状态
let currentStatus: Status = "pending";

//条件类型
type IsString<T> = T extends string ? true : false;
//T extends string - 条件判断：检查类型 T 是否能赋值给 string 类型
//? true : false - 三元运算符：如果条件成立返回 true，否则返回 false

//// 当 T 是 string 类型时
type A = IsString<string>; // true
// 相当于: string extends string ? true : false
// → true (因为 string 可以赋值给 string)

// 当 T 是 number 类型时  
type B = IsString<number>; // false
// 相当于: number extends string ? true : false
// → false (因为 number 不能赋值给 string)


// 基本类型
type C = IsString<"hello">;      // true (字面量字符串 extends string)
type D = IsString<123>;          // false
type E = IsString<boolean>;      // false

// 复杂类型
type F = IsString<string | number>;  // boolean (联合类型的分布式条件类型)
type G = IsString<any>;              // boolean
type H = IsString<never>;            // never

let aa:string="zs"
let aage:number=18//自动推断
console.log(aa.toUpperCase())
let ChangeNameToUpper=(name:string)=>{
    let aa=name.toUpperCase()
    return aa
}
const cc:boolean=true
let dd:any=23
let ee:unknown=56
console.log(ChangeNameToUpper("sss"))
console.log(ChangeNameToUpper("yyy"))